#ifndef INIT_ENTERA_CU
#define INIT_ENTERA_CU

#include "../fitness/fitnessEntera.cu"

__global__ void inicializarPoblacionEnteraManual(int* poblacion, float* fitnessActualDevice, struct Random randomGPU, int cantCromosomasPoblacion, float* fitnessOrdenadoDevice, float* matrizTiemposDevice){
	//Obtengo posicion a escribir.
	int posicionCromosoma = threadIdx.y * cantGenesEnCromosomaDevice * 2 + blockIdx.y * totalGenesEnPoblacionDevice;
	int posicionFitness = threadIdx.y * 2 + blockIdx.y * cantCromosomasPoblacionDevice;
	for(int i = 0; i < cantGenesEnCromosomaDevice * 2; i++){
		//Genero valor aleatorio.
		unsigned int r = (getRandomInt(randomGPU, posicionCromosoma)% 10);
		poblacion[posicionCromosoma+i] = r;
	}
	fitnessActualDevice[posicionFitness] = calcularFitnessEnteraGPU(poblacion, posicionCromosoma, matrizTiemposDevice);
	fitnessActualDevice[posicionFitness + 1] = calcularFitnessEnteraGPU(poblacion, posicionCromosoma + cantGenesEnCromosomaDevice, matrizTiemposDevice);
	
	fitnessOrdenadoDevice[posicionFitness] = fitnessActualDevice[posicionFitness];
	fitnessOrdenadoDevice[posicionFitness + 1] = fitnessActualDevice[posicionFitness + 1];
}

#endif
